/**
 * jsonp接口： 浏览器通过script标签发起请求，服务器返回一段js代码，浏览器执行这段代码
 * 特点：
 *  1. 只能发起get请求
 *  2. jsonp不属于真正的Ajax请求，因为它没有使用XMLHttpRequest对象
 * 注意：
 *  1. 如果项目中已经配置了cors，为了防止冲突，必须在设置cors之前设置jsonp，否则jsonp接口会被cors拦截
 * 优点：
 * 1. 跨域：JSONP 可以实现跨域请求数据，这是其最主要的优点。由于同源策略的限制，普通的 AJAX 请求不能跨域，但是 <script> 标签的 src 属性可以跨域，JSONP 正是利用这一点来实现跨域请求的。
 * 2. 兼容性好：JSONP 的兼容性非常好，支持现代浏览器和 IE8+。
 */

const express = require('express')
const app = express();
const apiRouter = require('./router');
const cors = require('cors');

app.use(cors());

app.get('/api/jsonp', (req, res) => {
    // 获取客户端发送过来的回调函数名
    const funcName = req.query.callback;

    // 得到要通过jsonp形式发送给客户端的数据
    const data = { name: 'zhangsan', age: 18 }

    // 根据前两步得到的数据，拼接出一个函数调用的字符串
    const str = `${funcName}(${JSON.stringify(data)})`

    // 把上一步拼接得到的字符串，响应给客户端的 <script> 标签进行解析执行
    res.send(str)
});
app.use('/api', apiRouter);
app.listen(8080,()=>{
    console.log('server is running on http://localhost:8080');
})